a11y: Only advertise action if menuitems are selectable
authorBenjamin Otte <otte@redhat.com>
Mon, 11 Jul 2011 01:08:32 +0000 (03:08 +0200)
committerBenjamin Otte <otte@redhat.com>
Mon, 11 Jul 2011 01:08:32 +0000 (03:08 +0200)
There's no "click" action for separatormenuitems, for example.

gtk/a11y/gtkmenuitemaccessible.c

index 2a540516b6165f3d376926d19a8fdcdc2fd6583e..429ff88f296a3ce59e216a3459a5961ec7c3e007 100644 (file)
@@ -21,6 +21,7 @@
 #include <gtk/gtk.h>
 #include "gtkmenuitemaccessible.h"
 #include "gtksubmenuitemaccessible.h"
+#include "gtk/gtkmenuitemprivate.h"
 
 #define KEYBINDING_SEPARATOR ";"
 
@@ -381,6 +382,15 @@ gtk_menu_item_accessible_do_action (AtkAction *action,
 static gint
 gtk_menu_item_accessible_get_n_actions (AtkAction *action)
 {
+  GtkWidget *item;
+
+  item = gtk_accessible_get_widget (GTK_ACCESSIBLE (action));
+  if (item == NULL)
+    return 0;
+
+  if (!_gtk_menu_item_is_selectable (item))
+    return 0;
+
   return 1;
 }
 
@@ -388,7 +398,7 @@ static const gchar *
 gtk_menu_item_accessible_action_get_name (AtkAction *action,
                                           gint       i)
 {
-  if (i != 0)
+  if (i != 0 || gtk_menu_item_accessible_get_n_actions (action) == 0)
     return NULL;
 
   return "click";